2017-07-07 9 views
0

Hallo Leute, ich möchte eine Option in meiner Kamera-App hinzufügen, wenn der Benutzer eine App öffnet, erscheint ein Pop mit einer Option, wo ein aufgenommenes Bild zu speichern und Pop-Up müssen die Unterordner der Kamera Standardspeicherordner enthalten und mit einer Option zum Erstellen neuer Ordner und Umbenennen Option und dann, wenn Sie drücken Sie die Eingabetaste, was auch immer er erfasst wird im gleichen Ordner gespeichert und Sobald er die Bilder im nächsten Ordner speichern möchten, Benutzer sollte in der Lage sein, aus den Einstellungen in der App-Leiste auszuwählen, wo, wenn gedrückt wird, das gleiche Popup mit einer Option angezeigt wird, wo ein aufgenommenes Bild mit den gleichen Unterordnern gespeichert werden kann.So speichern Sie das erfasste Bild in den internen Speicher

Meine Haupttätigkeit enthält

<?xml version="1.0" encoding="utf-8"?> 
 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
 
    package="com.example.sairamkrishna.myapplication" > 
 
    <uses-permission android:name="android.permission.CAMERA" /> 
 
    <application 
 
     android:allowBackup="true" 
 
     android:icon="@drawable/ic_launcher" 
 
     android:label="@string/app_name" 
 
     android:theme="@style/AppTheme" > 
 
     
 
     <activity 
 
     android:name="com.example.sairamkrishna.myapplication.MainActivity" 
 
     android:label="@string/app_name" > 
 
      
 
     <intent-filter> 
 
      <action android:name="android.intent.action.MAIN" /> 
 
      <category android:name="android.intent.category.LAUNCHER" /> 
 
     </intent-filter> 
 
      
 
    </activity> 
 
     
 
    </application> 
 
</manifest>
<?xml version="1.0" encoding="utf-8"?> 
 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
 
    xmlns:tools="http://schemas.android.com/tools" 
 
     android:layout_width="match_parent" 
 
    android:layout_height="match_parent" 
 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
 
    android:paddingRight="@dimen/activity_horizontal_margin" 
 
    android:paddingTop="@dimen/activity_vertical_margin" 
 
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> 
 
</RelativeLayout>
package com.example.sairamkrishna.myapplication; 
 

 
import android.Manifest; 
 
import android.app.Activity; 
 
import android.app.AlertDialog; 
 

 
import android.content.Context; 
 
import android.content.DialogInterface; 
 
import android.content.Intent; 
 
import android.content.SharedPreferences; 
 
import android.content.pm.PackageManager; 
 

 
import android.net.Uri; 
 
import android.os.Bundle; 
 
import android.provider.Settings; 
 

 
import android.support.v4.app.ActivityCompat; 
 
import android.support.v4.content.ContextCompat; 
 
import android.support.v7.app.AppCompatActivity; 
 
import android.support.v7.widget.Toolbar; 
 

 
public class MainActivity extends AppCompatActivity { 
 
    public static final int MY_PERMISSIONS_REQUEST_CAMERA = 100; 
 
    public static final String ALLOW_KEY = "ALLOWED"; 
 
    public static final String CAMERA_PREF = "camera_pref"; 
 

 
    @Override 
 
    protected void onCreate(Bundle savedInstanceState) { 
 
     super.onCreate(savedInstanceState); 
 
     setContentView(R.layout.activity_main); 
 

 
     if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { 
 
     if (getFromPref(this, ALLOW_KEY)) { 
 
      showSettingsAlert(); 
 
     } else if (ContextCompat.checkSelfPermission(this, 
 
      Manifest.permission.CAMERA) 
 
      
 
      != PackageManager.PERMISSION_GRANTED) { 
 
       
 
       // Should we show an explanation? 
 
       if (ActivityCompat.shouldShowRequestPermissionRationale(this, 
 
        Manifest.permission.CAMERA)) { 
 
        showAlert(); 
 
       } else { 
 
        // No explanation needed, we can request the permission. 
 
        ActivityCompat.requestPermissions(this, 
 
        new String[]{Manifest.permission.CAMERA}, 
 
        MY_PERMISSIONS_REQUEST_CAMERA); 
 
       } 
 
      } 
 
     } else { 
 
     openCamera(); 
 
     } 
 
     
 
    } 
 
    public static void saveToPreferences(Context context, String key, Boolean allowed) { 
 
     SharedPreferences myPrefs = context.getSharedPreferences(CAMERA_PREF, 
 
     Context.MODE_PRIVATE); 
 
     SharedPreferences.Editor prefsEditor = myPrefs.edit(); 
 
     prefsEditor.putBoolean(key, allowed); 
 
     prefsEditor.commit(); 
 
    } 
 
\t \t 
 
    public static Boolean getFromPref(Context context, String key) { 
 
     SharedPreferences myPrefs = context.getSharedPreferences(CAMERA_PREF, 
 
     Context.MODE_PRIVATE); 
 
     return (myPrefs.getBoolean(key, false)); 
 
    } 
 
\t \t 
 
    private void showAlert() { 
 
     AlertDialog alertDialog = new AlertDialog.Builder(MainActivity.this).create(); 
 
     alertDialog.setTitle("Alert"); 
 
     alertDialog.setMessage("App needs to access the Camera."); 
 
     
 
     alertDialog.setButton(AlertDialog.BUTTON_NEGATIVE, "DONT ALLOW", 
 
     new DialogInterface.OnClickListener() { 
 
      public void onClick(DialogInterface dialog, int which) { 
 
       dialog.dismiss(); 
 
       finish(); 
 
      } 
 
     }); 
 
\t \t \t 
 
     alertDialog.setButton(AlertDialog.BUTTON_POSITIVE, "ALLOW", 
 
     new DialogInterface.OnClickListener() { 
 
      
 
      public void onClick(DialogInterface dialog, int which) { 
 
       dialog.dismiss(); 
 
       ActivityCompat.requestPermissions(MainActivity.this, 
 
       new String[]{Manifest.permission.CAMERA}, 
 
       MY_PERMISSIONS_REQUEST_CAMERA); 
 
      } 
 
     }); 
 
     alertDialog.show(); 
 
    } 
 
\t \t 
 
    private void showSettingsAlert() { 
 
     AlertDialog alertDialog = new AlertDialog.Builder(MainActivity.this).create(); 
 
     alertDialog.setTitle("Alert"); 
 
     alertDialog.setMessage("App needs to access the Camera."); 
 
     
 
     alertDialog.setButton(AlertDialog.BUTTON_NEGATIVE, "DONT ALLOW", 
 
     new DialogInterface.OnClickListener() { 
 
      
 
      public void onClick(DialogInterface dialog, int which) { 
 
       dialog.dismiss(); 
 
       //finish(); 
 
      } 
 
     }); 
 
\t \t \t 
 
     alertDialog.setButton(AlertDialog.BUTTON_POSITIVE, "SETTINGS", 
 
     new DialogInterface.OnClickListener() { 
 
        
 
      public void onClick(DialogInterface dialog, int which) { 
 
       dialog.dismiss(); 
 
       startInstalledAppDetailsActivity(MainActivity.this); 
 
      } 
 
     }); 
 
\t \t \t 
 
     alertDialog.show(); 
 
    } 
 
\t \t 
 
    @Override 
 
    public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { 
 
     switch (requestCode) { 
 
     case MY_PERMISSIONS_REQUEST_CAMERA: { 
 
      for (int i = 0, len = permissions.length; i < len; i++) { 
 
       String permission = permissions[i]; 
 
      
 
       if (grantResults[i] == PackageManager.PERMISSION_DENIED) { 
 
        boolean 
 
        showRationale = 
 
        ActivityCompat.shouldShowRequestPermissionRationale(
 
        this, permission); 
 
        
 
        if (showRationale) { 
 
        showAlert(); 
 
        } else if (!showRationale) { 
 
        // user denied flagging NEVER ASK AGAIN 
 
        // you can either enable some fall back, 
 
        // disable features of your app 
 
        // or open another dialog explaining 
 
        // again the permission and directing to 
 
        // the app setting 
 
        saveToPreferences(MainActivity.this, ALLOW_KEY, true); 
 
        } 
 
       } 
 
      } 
 
     } 
 
      
 
     // other 'case' lines to check for other 
 
     // permissions this app might request 
 
     } 
 
    } 
 
\t \t 
 
    @Override 
 
    protected void onResume() { 
 
     super.onResume(); 
 
    } 
 
\t \t 
 
    public static void startInstalledAppDetailsActivity(final Activity context) { 
 
     if (context == null) { 
 
     return; 
 
     } 
 
\t \t \t 
 
     final Intent i = new Intent(); 
 
     i.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); 
 
     i.addCategory(Intent.CATEGORY_DEFAULT); 
 
     i.setData(Uri.parse("package:" + context.getPackageName())); 
 
     i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
 
     i.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); 
 
     i.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); 
 
     context.startActivity(i); 
 
    } 
 
\t \t 
 
    private void openCamera() { 
 
     Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); 
 
     startActivity(intent); 
 
    } 
 
}

Jede Hilfe wird weitgehend Geschätzt werden.

Antwort

0

Nicht sicher, Ihre Frage verstehen ... Wenn Sie allerdings einige Daten über die Anwendung gespeichert werden sollen, und um es abzurufen in der Lage, in Ihrem Telefon, auch wenn Sie nicht online sind, können Sie verwenden: window.localStorage

Um Ihren Artikel zu aktualisieren, können Sie setItem ("itemName", item) erneut verwenden.

Beantwortet es Ihre Frage? :)

Verwandte Themen