مشکل در Permission ها در اندروید 6 ؟؟؟؟
با سلام خدمت دوستان عزیز
من یه برنامه دارم که از صفحه اسکرین شات میگیره و به عنوان یه فایل jpg اونو تو پوشه مورد نظر ذخیره میکنه و بلافاصله بازش میکنه
من راه های زیادی رو برای permission ها آزمایش کردم و همشون جالبه که روی امولاتور خود اندروید مشکلی ندارن ولی وقتی روی گوشی واقعی نصب میشن دچار مشکل میشه برای مثال راه حلی که دوست عزیزمون توی لینک زیر گفتن کاملا روی امولاتور خود اندورید مشکلی نداره
http://answers.uncox.com/q/17583
و اما مشکل : فکر میکنم مشکل زیاد بزرگ نباشه ....
وقتی برای بار اول برنامه رو بعد از نصب باز میکنی از شما میخواد که اجازه بدید برنامه permission نوشتن اطلاعات بر روی کارت حافظه رو داشته باشه و بعد از زدن Allow این کار انجام میشه ولی عمل نوشتن روی کارت حافظه انجام نمیشه و باید یکبار برنامه رو ببندم و دوباره Run کنم و برای بار دوم به خوبی برنامه کار میکنه
من میخوام همون بار اول که وارد اکتیوتی خودم شدم این کار انجام بشه در ادامه کد رو براتون میذارم
public class MainActivity3 extends AppCompatActivity implements View.OnClickListener{
private Context context;
private Activity activity;
private static final int PERMISSION_REQUEST_CODE = 1;
private View view;
File path;
String myDate , filename;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
vScroll = (ScrollView) findViewById(R.id.vScroll);
hScroll = (HorizontalScrollView) findViewById(R.id.hScroll);
context = getApplicationContext();
activity = this;
Button check_permission = (Button)findViewById(R.id.check_permission);
Button request_permission = (Button)findViewById(R.id.request_permission);
check_permission.setOnClickListener(this);
request_permission.setOnClickListener(this);
new PermissionHandler().checkPermission(this, android.Manifest.permission.WRITE_EXTERNAL_STORAGE, new PermissionHandler.OnPermissionResponse() {
@Override
public void onPermissionGranted() {
// permission granted
path = new File(Environment.getExternalStorageDirectory(), "FF");
if (!path.exists()) {
path.mkdir();
}
}
@Override
public void onPermissionDenied() {
// User canceled permission
}
});
}
@Override
public void onClick(View v) {
view = v;
int id = v.getId();
switch (id){
case R.id.check_permission:
break;
case R.id.request_permission:
new MaterialDialog.Builder(this)
.title("Creating PDF")
.content("Enter file name")
.input("Example : abc", null, new MaterialDialog.InputCallback() {
@Override
public void onInput(MaterialDialog dialog, CharSequence input) {
if (input == null) {
Toast.makeText(getApplicationContext(), "Name cannot be blank", Toast.LENGTH_LONG).show();
} else {
filename = input.toString();
try {
Bitmap bitmap = Bitmap.createBitmap(hScroll.getChildAt(0).getWidth(),
vScroll.getChildAt(0).getHeight(),
Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
// canvas.scale(2.0f,2.0f);
hScroll.getChildAt(0).draw(canvas);
vScroll.getChildAt(0).draw(canvas);
SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss", Locale.getDefault());
myDate = format.format(new Date());
ActivityCompat.requestPermissions(activity,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},PERMISSION_REQUEST_CODE);
File imageFile = new File(path,filename +".jpg");
FileOutputStream outputStream = new FileOutputStream(imageFile);
int quality = 100;
bitmap.compress(Bitmap.CompressFormat.JPEG, quality, outputStream);
outputStream.flush();
outputStream.close();
//openScreenshot(imageFile);
} catch (Throwable e) {
e.printStackTrace();
}
}
}
})
.show();
break;
}
}
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .